package com.otaku.common.ResultUtils;

import com.otaku.common.util.DateUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.List;

/**
 * 统一返回接口模板
 */
public class ResultUtil {

    private final static Logger LOGGER = LoggerFactory.getLogger(ResultUtil.class);

    /**
     * 访问成功 无返回值
     *
     * @return
     */
    public static ResultModel success() {
        return success(null);
    }

    /**
     * 访问成功 有返回值
     *
     * @param value
     * @return
     */
    public static ResultModel success(Object value) {
        return returnMsg(ResultCode.SUCCESS, null, null, value);
    }

    /**
     * 登录成功
     *
     * @param value
     * @return
     */
    public static ResultModel loginSuccess(String token, Object value) {
        return returnMsg(ResultCode.LOGIN_SUCCESS, token, null, value);
    }

    /**
     * 登录失败
     *
     * @param value
     * @return
     */
    public static ResultModel loginError(Object value) {
        return returnMsg(ResultCode.LOGIN_ERROR, null, null, value);
    }


    /**
     * 无系统提示信息 错误
     *
     * @param code
     * @return
     */
    public static ResultModel error(ResultCode code) {
        return returnMsg(code, null, null, null);
    }

    /**
     * 有系统提示信息错误
     *
     * @param code
     * @param sysMsg
     * @return
     */
    public static ResultModel error(ResultCode code, String sysMsg) {
        return returnMsg(code, null, sysMsg, null);
    }

    /**
     * 有系统提示信息和附带返回数据的错误
     *
     * @param code
     * @param sysMsg
     * @param value
     * @return
     */
    public static ResultModel returnMsg(ResultCode code, String token, String sysMsg, Object value) {
        ResultModel result = new ResultModel(code.getCode(), token, code.getMsg(), sysMsg, value);
        result.setTimestamp(DateUtils.getNowTime(DateUtils.DATETIME_FORMAT));
        return result;
    }
}
